import { PagePath, PageTitle } from '@/common/constants'
import { useUserStore } from '@/common/store'

/** 需要拦截的路径 */
const interceptPath = [PagePath.SETTING, PagePath.MY_LIST, PagePath.NOTIFICATION, PagePath.NOTIFICATION_DETAIL, PagePath.CREATE_ACTIVITY, PagePath.CREATE_ACTIVITY, PagePath.CREATE_NOTIFICATION, PagePath.CREATE_PROJECT]

/**
 * 路由拦截器
 */
export const routeInterception = () => {
  const { hope_user_info } = useUserStore()
  const list = ['navigateTo', 'redirectTo', 'reLaunch', 'switchTab']

  list.forEach((item) => {
    uni.addInterceptor(item, {

      invoke(e) {
        // 获取路径
        const url = e.url.split('?')[0]

        // 判断是否需要拦截 以及 用户是否登录
        if (interceptPath.includes(url) && hope_user_info === null) {
          uni.showToast({
            title: '请先登录',
            icon: 'none',
          })

          // 由于switch不能传递query参数 所以使用storage 辨别是否是登录操作
          uni.setStorageSync('isToLogin', true)

          uni.switchTab({
            url: `${PagePath.MY}?isLogin=true`,
          })

          return false
        }

        return true
      },

      // 失败回调拦截
      fail(err) {
        console.log(err)
      },
    })
  })
}
